<?php

/**
 * LoginForm class.
 * LoginForm is the data structure for keeping
 * user login form data. It is used by the 'login' action of 'SiteController'.
 */
class UsuariosForm extends CFormModel
{
    public $nombre;
    public $password;
    private $identidad;

    public function rules()
    {
        return array(
            // usuario y contraseña requeridos (validacion clientside)
            array('nombre, password', 'required', 'message'=>'Campo obligatorio.'),
            // usuario existe y contraseña correcta (validacion ajax)
            array('password', 'autenticar'),
        );
    }

    public function attributeLabels()
    {
        return array(
            'nombre'=>'Usuario',
            'password'=>'Contraseña',
        );
    }

    public function autenticar()
    {
        if(!$this->hasErrors())
        {          
            $this->identidad=new UserIdentity($this->nombre,$this->password);
            if(!$this->identidad->authenticate()){
                if($this->identidad->errorCode==CBaseUserIdentity::ERROR_USERNAME_INVALID){
                    $this->addError('nombre','El usuario no existe.');
                }
                elseif($this->identidad->errorCode==CBaseUserIdentity::ERROR_PASSWORD_INVALID){
                    $this->addError('password','Contraseña incorrecta.');
                }                
            }                    
        }
    } 

    public function login()
    {
        if($this->identidad===null){
                return false;
        }
        if($this->identidad->errorCode===UserIdentity::ERROR_NONE){
                $duration=3600; // 1 hora
                Yii::app()->user->login($this->identidad,$duration);
                return true;
        }
        else return false;
    }
}
